<?php


namespace app\api\controller;


/**
 * 需要登录的场景需要继承AuthBase
 * Class AuthBase
 * @package app\api\controller
 */
class AuthBase extends ApiBase
{
    public $userId = 0;
    public $username = "";
    public $accessToken = "";
    public $isLogin = 0; // 模拟登录 1代表登录  0代表未登录
    public function initialize()
    {
        // 关于判断登录可以参考admin模块的前置中间件判断是否登录
        parent::initialize(); // TODO: Change the autogenerated stub
        // 模拟登录 start
        if($this->isLogin == 1){
            $this->userId = 1;
            return true;
        }
        // 模拟登录 end
        $this->accessToken = $this->request->header('access-token');
        if(!$this->accessToken || !$this->isLogin()){
            return $this->show(config("status.not_login"), "没有登录");//注意此处show方法不好用的原因，需要在父类中重写，异常处理也要注意
        }
    }

    /**
     * 判断用户是否登录
     * @return bool
     */
    public function isLogin(){
        $userInfo = cache(config("redis.token_pre").$this->accessToken);
        if(!$userInfo){
            return false;
        }
        if(!empty($userInfo['id']) && !empty($userInfo['username'])){
            //此处存储方便共用获取用户信息时不用再传用户ID直接用
            $this->userId = $userInfo['id'];
            $this->username = $userInfo['username'];
            return true;
        }
        return false;
    }
}
